﻿#include "CreateMeshAction.h"
#include "Application.h"

void CreateMeshAction::Execute()
{
  _parser.SetPrefix(_prefix);

  auto dims = _parser.GetVectorValue<int>("dims");




  if (dims.size() == 1)
  {
    Error("一维网格生成不支持");
  }
  else if (dims.size() == 2)
  {
    auto x_range = _parser.GetVectorValue<FloatDefault>("x_range");
    auto y_range = _parser.GetVectorValue<FloatDefault>("y_range");

    _app.GetMesh() = std::make_shared<MeshBase>(vtkm::Id2{ dims[0], dims[1] },
                                                vtkm::Vec2f{ x_range[0], y_range[0] },
                                                vtkm::Vec2f{ x_range[1], y_range[1] });
  }
  else if (dims.size() == 3)
  {
    auto x_range = _parser.GetVectorValue<FloatDefault>("x_range");
    auto y_range = _parser.GetVectorValue<FloatDefault>("y_range");
    auto z_range = _parser.GetVectorValue<FloatDefault>("z_range");
    _app.GetMesh() = std::make_shared<MeshBase>(vtkm::Id3{ dims[0], dims[1], dims[2] },
                                                vtkm::Vec3f{ x_range[0], y_range[0], z_range[0] },
                                                vtkm::Vec3f{ x_range[1], y_range[1], z_range[1] });
  }
  else
  {
    Error("dim设置错误");
  }

}
